<!DOCTYPE html>
<html lang="en">
<head><meta name="generator" content="Hexo 3.9.0">
  <meta charset="utf-8">
  
  
  
    <meta name="description" content="“写生活的点滴，与其他”">
  
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title>
    使用Docker部署分布式爬虫 |
    
    西瓜的夏天</title>
  
    <link rel="shortcut icon" href="/favicon.ico">
  
  <link rel="stylesheet" href="/css/style.css">
  
    <link rel="stylesheet" href="/fancybox/jquery.fancybox.min.css">
  
  <script src="/js/pace.min.js"></script>
</head>
</html>
<body>
<main class="content">
  <section class="outer">
  

<article id="post-yuque/使用Docker部署分布式爬虫" class="article article-type-post" itemscope itemprop="blogPost" data-scroll-reveal>
  
  <div class="article-inner">
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      使用Docker部署分布式爬虫
    </h1>
  
  




      </header>
    

    
      <div class="article-meta">
        <a href="/2019/08/26/yuque/使用Docker部署分布式爬虫/" class="article-date">
  <time datetime="2019-08-26T09:34:36.000Z" itemprop="datePublished">2019-08-26</time>
</a>
        
      </div>
    

    

    <div class="article-entry" itemprop="articleBody">
      


      

      
        <p><a name="wSExV"></a></p>
<h4 id="使用scrapy-redis"><a href="#使用scrapy-redis" class="headerlink" title="使用scrapy-redis"></a>使用scrapy-redis</h4><p><a name="8vFFR"></a></p>
<h5 id="了解scrapy-redis的原理"><a href="#了解scrapy-redis的原理" class="headerlink" title="了解scrapy-redis的原理"></a>了解scrapy-redis的原理</h5><p>scrapy-redis主要是使用redis 代替了scrapy原本的调度器和过滤器。<br>只需要修改setting文件即可<br><a id="more"></a><br><a name="Q24Ux"></a></p>
<h4 id="安装docker"><a href="#安装docker" class="headerlink" title="安装docker"></a>安装docker</h4><p>使用了华为云官方提供的部署工具<br>只要提供账号密码 以及dockerfile即可<br><a name="MZG8I"></a></p>
<h4 id="安装scrapyd镜像"><a href="#安装scrapyd镜像" class="headerlink" title="安装scrapyd镜像"></a>安装scrapyd镜像</h4><p>首先尝试通过dockerfile 构造镜像 但是失败了，后来直接采用了github 上写好的镜像文件 方才构造完成<br>在使用的过程中牢记一下命令<br>docker ps -a 查看已有的容器<br>docker ps 查看正在运行的容器<br>docker start 启动容器<br>docker stop 关闭容器<br>docker rm 删除容器<br>docker run –name [给容器起名] -v $PWD:/code/logs -d xxxx<br>-v是挂载宿主机的文件<br>$PWD是当前目录<br>:后面的是容器中的工作目录<br>-d 是在后台yunx<br>常见的有docker exec -it xxx 会分配一个伪终端<br>使用dockerfile构造镜像<br>docker images [打算叫的镜像名] .<br>这个点不能省略 dockerfile文件在当前文件夹下<br>还有就是将容器的端口映射到宿主机中，比如8080:8080<br><a name="y7O9y"></a></p>
<h4 id="dockerfile文件基本格式"><a href="#dockerfile文件基本格式" class="headerlink" title="dockerfile文件基本格式"></a>dockerfile文件基本格式</h4><p>主要有两个比较重要的地方<br>FROM…<br>RUN…<br>基本来说是FROM 搭建了基本的框架<br>然后RUN 执行一些安装的命令<br>如果要使用本地的配置文件，需要使用COPY命令 将宿主机的文件拷贝到容器中，当然也需要定义容器的工作目录吧，我想是需要的。</p>
<p><a name="qOtDY"></a></p>
<h4 id="安装scrapydweb"><a href="#安装scrapydweb" class="headerlink" title="安装scrapydweb"></a>安装scrapydweb</h4><p>目前采用的是github直接构建，可能之后也会使用docker <br>运用scrapydweb命令<br>在端口5000中即可看到管理界面<br>在运行前需配置文件，目前来说 在哪里执行scrapydweb命令，就会在当前文件夹下生成一个配置文件，在配置文件中需要加上scrapyd的IP地址和端口号，否则无法正常运行。除此之外，还可以在当前文件夹下创建一个project文件夹用来存放项目文件。<br><a name="wijTa"></a></p>
<h3 id="存在问题"><a href="#存在问题" class="headerlink" title="存在问题"></a>存在问题</h3><p>docker构建镜像文件时的时区问题没有解决<br>docker重启失败的问题没有解决</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="http://yoursite.com/2019/08/26/yuque/使用Docker部署分布式爬虫/" data-id="ck3ib53lw0004c8p2udgtutns"
         class="article-share-link">分享</a>
      
    </footer>

  </div>

  
    
  <nav class="article-nav">
    
      <a href="/2019/11/28/yuque/电子游戏那些年/" class="article-nav-link">
        <strong class="article-nav-caption">前一篇</strong>
        <div class="article-nav-title">
          
            电子游戏那些年
          
        </div>
      </a>
    
    
  </nav>


  

  
    
  <div class="gitalk" id="gitalk-container"></div>
  <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
  <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
  <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
  <script type="text/javascript">
    var gitalk = new Gitalk({
      clientID: 'e7815f2f2cd9757f08b8',
      clientSecret: '249c25197ec4f94aa960aa2ba0a94b5fdc928439',
      repo: 'gitalk',
      owner: 'zhio',
      admin: ['zhio'],
      // id: location.pathname,      // Ensure uniqueness and length less than 50
      id: md5(location.pathname),
      distractionFreeMode: false,  // Facebook-like distraction free mode
      pagerDirection: 'last'
    })

  gitalk.render('gitalk-container')
  </script>

  

</article>



</section>
  <footer class="footer">
  <div class="outer">
    <div class="float-right">
      <ul class="list-inline">
  
    <li><i class="fe fe-smile-alt"></i> <span id="busuanzi_value_site_uv"></span></li>
  
</ul>
    </div>
    <ul class="list-inline">
      <li>&copy; 2019 西瓜的夏天</li>
      <li>Powered by <a href="http://hexo.io/" target="_blank">Hexo</a></li>
      <li>Theme  <a href="https://github.com/zhwangart/hexo-theme-ocean">Ocean</a></li>
    </ul>
  </div>
</footer>

</main>

  <aside class="sidebar">
    
    <button class="navbar-toggle"></button>
<nav class="navbar">
  
    <div class="logo">
      <a href="/"><img src="/images/hexo.svg" alt="西瓜的夏天"></a>
    </div>
  
  <ul class="nav nav-main">
    
      <li class="nav-item">
        <a class="nav-item-link" href="/">主页</a>
      </li>
    
      <li class="nav-item">
        <a class="nav-item-link" href="/archives">归档</a>
      </li>
    
      <li class="nav-item">
        <a class="nav-item-link" href="/gallery">相册</a>
      </li>
    
      <li class="nav-item">
        <a class="nav-item-link" href="/about">关于</a>
      </li>
    
    <li class="nav-item">
      <a class="nav-item-link nav-item-search" title="搜索">
        <i class="fe fe-search"></i>
        搜索
      </a>
    </li>
  </ul>
</nav>
<nav class="navbar navbar-bottom">
  <ul class="nav">
    <li class="nav-item">
      <div class="totop" id="totop">
  <i class="fe fe-rocket"></i>
</div>
    </li>
    <li class="nav-item">
      
        <a class="nav-item-link" target="_blank" href="/atom.xml" title="RSS Feed">
          <i class="fe fe-feed"></i>
        </a>
      
    </li>
  </ul>
</nav>
<div class="search-form-wrap">
  <div class="local-search local-search-plugin">
  <input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
  <div id="local-search-result" class="local-search-result"></div>
</div>
</div>
  </aside>
  <script src="/js/jquery-2.0.3.min.js"></script>
<script src="/js/jquery.justifiedGallery.min.js"></script>
<script src="/js/lazyload.min.js"></script>
<script src="/js/busuanzi-2.3.pure.min.js"></script>

  <script src="/fancybox/jquery.fancybox.min.js"></script>




<script src="/js/ocean.js"></script>

</body>
</html>